package org.grottarossa.template.data.pojo.discussions;


import java.io.Serializable;
import java.util.GregorianCalendar;

import org.grottarossa.template.data.enums.EnumDiscussionType;
import org.grottarossa.template.data.enums.EnumQueryType;
import org.grottarossa.template.drivers.components.tokens.CaseManagementId;
import org.grottarossa.template.drivers.components.tokens.DiscussionManagementId;

/**
 * La classe rappresenta l'oggetto discussion.
 *
 * @author Marco Sabatini (sabatini.m@gmail.com)
 * @author Maurizio Farina (maurizio.farina@gmail.com)
* @author Marco Trischitta (marco.trischitta@gmail.com)
 * @version %I%, %G%
 * @since 1.0
 *
 * */
public class Discussion implements Serializable
{
	private static final long serialVersionUID = 3111579743489831273L;

	/**E' il nome del topic creato.*/
	private String name = "";
	/**E' il body della discussione.*/
	private String body = "";
	/**E' l'id del casefolder.*/
	private CaseManagementId caseId;
	/**E' il tipo di discussion.*/
	private EnumDiscussionType discussionType;
	/**E' l'id della discussion associata al casefolder.*/
	private DiscussionManagementId discussionId;
	/**E' l'id della discussione padre dell'attuale.*/
	private DiscussionManagementId parentDiscussionId;
	/**E' l'utente che ha effettuato l'ultima modifica sulla discussion.*/
	private String modifiedBy;
	/**E' la data di ultima modifica della discussion.*/
	private GregorianCalendar modifiedDateTime;
	/**E' un intero che rappresenta il numero di repliche della discussion*/
	private int replies;
	/***/
	private CaseManagementId templateId;//TODO: ???

	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Discussion) {
			Discussion tmp = (Discussion)obj;
			return tmp.getId().getIdentity().equals(discussionId.getIdentity());
		}
		else
			return false;
	}

	@Override
	public int hashCode() {
		return discussionId.getIdentity().hashCode();
	}

	public String getBody() {
		return body;
	}
	public void setBody(String body) {
		this.body = body;
	}
	public EnumDiscussionType getDiscussionType() {
		return discussionType;
	}
	public void setDiscussionType(EnumDiscussionType discussionType) {
		this.discussionType = discussionType;
	}
	public DiscussionManagementId getId() {
		return discussionId;
	}
	public void setId(DiscussionManagementId id) {
		this.discussionId = id;
	}
	public DiscussionManagementId getParentId() {
		return parentDiscussionId;
	}
	public void setParentId(DiscussionManagementId parentId) {
		this.parentDiscussionId = parentId;
	}
	public String getModifiedBy() {
		return modifiedBy;
	}
	public void setModifiedBy(String modifiedBy) {
		this.modifiedBy = modifiedBy;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getReplies() {
		return replies;
	}
	public void setReplies(int replies) {
		this.replies = replies;
	}
	public void setModifiedDateTime(GregorianCalendar modifiedDateTime) {
		this.modifiedDateTime = modifiedDateTime;
	}
	public GregorianCalendar getModifiedDateTime() {
		return modifiedDateTime;
	}
	public void setCaseId(CaseManagementId caseId) {
		this.caseId = caseId;
	}
	public CaseManagementId getCaseId() {
		return caseId;
	}

	public void setTemplateId(CaseManagementId templateId) {
		this.templateId = templateId;
	}

	public CaseManagementId getTemplateId() {
		return templateId;
	}

	public boolean isTopic()
	{
		return discussionType.isTopic();
	}
}